// import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
    //全局配置 token、userinfo
    state: {
        // token: localStorage.getItem("token"),  //同理token也可以？？可以问一下  不行   token为空可以请求
        token: '',
        //初始化的时候直接从sessionStorage中获取
        userinfo: JSON.parse(sessionStorage.getItem("userinfo"))
    },
    //通过mutations 赋值、修改。。。
    mutations: {
        // 类似set方法
        //方法名:（参数）
        SET_TOKEN: (state, token) => {
            state.token = token
            //存放到浏览器的localStorage  即使关闭也存在  （jwt来验证时间）
            //参考链接：https://blog.csdn.net/weixin_41997724/article/details/84560612
            localStorage.setItem("token", token)
        }, //同理存放UserInfo
        SET_USERINFO: (state, userinfo) => {
            state.userinfo = userinfo
            //也可以放在SessionStorage（一次会话 关闭就没了）   只能村字符串
            //参考连接：https://www.cnblogs.com/pengc/p/8714475.html
            //sessionStorage保存的是字符串  不是json对象   所以用getter取到
            sessionStorage.setItem("userinfo", JSON.stringify(userinfo))
        },
        //将信息（token、userinfo）设置为空
        //登出/异常的时候有用到
        REMOVE_INFO: (state) => {
            state.token = ''
            state.userinfo = ''
            localStorage.setItem("token", '')
            sessionStorage.setItem("userinfo", JSON.stringify(''))
        }
    },


    getters: {
        //同理 get 方法  获取user信息
        getUser: state => {
            return state.userinfo
        }

    },
    actions: {},
    modules: {}
})
